home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU10.ARC / MSD - PART 12 < prev    next >
Encoding:
Text File  |  2019-04-13  |  4.7 KB  |  74 lines

  1. ║CM:MSD - PART 12
  2. ║LM21:RM70:PP66:PG60
  3. ║P#23
  4. ║FT1:,,╨AGE <>
  5. ║AI-16
  6.        ─╒╨╘╥╦   ─UPLICATE CURRENT TRACK ON THE OTHER DRIVE
  7.  
  8. $├867           ┌ERO ─╒╨╙╘ [$4├╞┴], THE STARTING SECTOR AT WHICH DUPLICATION WILL BEGIN.
  9. $├86├           ╩╙╥ ─╒╨╚┴╞ [$├872] TO DUPLICATE HALF THE TRACK (THE EVEN SECTORS) BY STARTING AT ─╒╨╙╘ AND PROCESSING SECTORS BY INCREMENTS OF 2.
  10. $├86╞           ╔NCREMENT ─╒╨╙╘ [$4├╞┴] TO $01 TO PICK UP THE ODD SECTORS AND FALL THROUGH TO ─╒╨╚┴╞ [$├872] TO DUPLICATE THE OTHER HALF OF THE TRACK.
  11.  
  12.  
  13.  
  14.        ─╒╨╚┴╞ - ─UPLICATE HALF A TRACK
  15.  
  16. $├872           ╩╙╥ ─╒╨╔╬╔ [$├8╞2] TO INITIALIZE THE START SECTOR AND BUFFER.
  17. $├875  ─╚1      ╩╙╥ ─╒╨╙┼╘ [$├8╞┼] TO SET UP TO READ THE CURRENT SECTOR.
  18. $├878           ╩╙╥ ─╒╨╚─╥ [$├977] TO BUILD THE HEADER IMAGE, READ IT, AND WAIT FOR THE DATA BLOCK.
  19. $├87┬           ╩╙╥ ╥─╟├╥ [$╞400] TO READ THE ╟├╥ IMAGE OF THE DATA BLOCK.
  20. $├87┼           ╩╙╥ ─╒╨╬╪╘ [$├982] TO INCREMENT CONTROLS TO THE NEXT SECTOR TO BE READ.
  21. $├881           ╔F THERE ARE MORE SECTORS TO PROCESS (THE .├ FLAG WILL BE CLEAR) THEN BRANCH BACK TO ─╚1.
  22. $├883           ╩╙╥ ─╒╨╔╬╔ [$├8╞2] TO INITIALIZE CONTROLS FOR THE FIRST BLOCK.
  23. $├886           ╩╙╥ ─╒╨╙┼╘ [$├8╞┼] TO SET POINTERS TO PROCESS THE DATA BLOCK FOR THE CURRENT SECTOR.
  24.        ╬OTE:    ┬EFORE THE DATA IS COPIED, WE WANT TO ENSURE IT IS CORRECT BY CHECKING THE HEADER ╔─ AND THE DATA CHECKSUM.  ┬EFORE THESE CHECKS CAN BE PERFORMED, THE DATA MUST BE CONVERTED FROM ╟├╥ TO BINARY AND TO DO THIS CONVERSION, THE DATA MUST BE PLACED IN THE CORRECT AREAS SO THE INTERNAL CONVERSION ROUTINE CAN BE USED.
  25. $├889           ╘RANSFER THE DATA OVERFLOW BYTES USING .┘ AS THE INDEX FROM $┬┴ TO $╞╞ INCLUSIVE, FROM THE AREA (╧╓╥╨╬╘),┘ [($75),┘] TO THE USUAL OVERFLOW BUFFER AT ╧╓╥┬╒╞,┘ [$4╞00,┘].
  26. $├893           ╙ET ╟├╥╞╠╟ [$4┼┬1] TO $01 TO INDICATE DATA IS IN ╟├╥ FORM AND THEN ╩╙╥ ╟├╥┬╔╬ [$╞├87] TO CONVERT THE DATA TO BINARY.
  27. $├89┬           ╠OAD .┴ WITH ┬╔─ [$4┼┴1] AND MAKE SURE IT IS VALID BY COMPARING IT TO ─┬╔─ [$4┼┴├].  ╔F THEY ARE EQUAL, EVERYTHING IS FINE SO BRANCH TO ─╚3.
  28. $├8┴3           ╠OAD .┴ WITH $04 (─┴╘┴ ┬╠╧├╦ ╬╧╘ ╞╧╒╬─) AND EXIT WITH A BRANCH TO ─╚8.
  29. $├8┴7  ─╚3      ╩╙╥ ├╚╦┬╠╦ [$╞52┴] TO CALCULATE THE DATA BLOCK CHECKSUM.
  30. $├8┴┴           ╔F THE COMPUTED CHECKSUM (RETURNED IN .┴) IS THE SAME AS ├╚╦╙╒═ [$4┼┴3] (FROM THE DATA BLOCK) THEN BRANCH TO ─╚4 TO CONTINUE.
  31. $├8┴╞           ╠OAD .┴ WITH $05 (─┴╘┴ ┬╠╧├╦ ├╚┼├╦╙╒═ ┼╥╥╧╥) AND EXIT WITH A BRANCH TO ─╚8.
  32. $├8┬3  ─╚4      ╩╙╥ ─╒╨╬╪╘ [$├982] TO ADVANCE TO THE NEXT DATA BLOCK.
  33. $├8┬6           ╔F NOT FINISHED, LOOP BACK TO ─╚2.
  34. ║FP
  35.        ╬OTE:    ╙INCE THE DATA HAS BEEN CONVERTED FROM ╟├╥ TO BINARY, IT IS JUST READ BACK IN FROM THE DISK RATHER THAN RE-CONVERTING IT TO ╟├╥.
  36. $├8┬8           ╩╙╥ ─╒╨╔╬╔ [$├8╞2] TO INITIALIZE CONTROLS FOR THE START BLOCK.
  37. $├8┬┬  ─╚5      ╩╙╥ ─╒╨╙┼╘ [$├8╞┼] TO SET CONTROLS FOR READING THE DATA.
  38. $├8┬┼           ╩╙╥ ─╒╨╥─ [$├940] TO READ THE DATA.
  39. $├8├1           ╩╙╥ ─╒╨╬╪╘ [$├982] TO ADVANCE TO THE NEXT BLOCK.
  40. $├8├4           ╔F THERE ARE MORE BLOCKS TO READ THEN LOOP BACK TO ─╚5.
  41.        ╬OTE:    ╬OW COPY THIS DATA TO THE OTHER DRIVE.
  42. $├8├6           ╩╙╥ ╙╫╔─╥╓ [$├85┼] TO SWITCH TO THE DESTINATION DRIVE.
  43. $├8├9           ╩╙╥ ─╒╨╔╬╔ [$├8╞2] TO INITIALIZE CONTROLS FOR THE START BLOCK.
  44. $├8├├  ─╚6      ╩╙╥ ─╒╨╙┼╘ [$├8╞┼] TO SET CONTROLS FOR READING THE DATA.
  45. $├8├╞           ╩╙╥ ╫╥╘┬╒╞ [$╞4─├] TO OUTPUT THE DATA.
  46. $├8─2           ╔F THERE WAS AN ERROR THEN BRANCH TO ─╚8.
  47. $├8─4           ╩╙╥ ─╒╨╬╪╘ [$├982] TO ADVANCE TO THE NEXT BLOCK.
  48. $├8─7           ╔F THERE ARE MORE BLOCKS TO PROCESS THEN LOOP BACK TO ─╚6.
  49.        ╬OTE:    ╬OW REPROCESS AGAIN, THIS TIME PERFORMING A VERIFY TO ENSURE THE DATA WAS WRITTEN CORRECTLY.
  50. $├8─9           ╩╙╥ ─╒╨╔╬╔ [$├8╞2] TO SET CONTROLS FOR THE START BLOCK.
  51. $├8─├           ╩╙╥ ╥┼┴─╧╬ [$╞┼1┴] TO READ THE DISK.
  52. $├8─╞  ─╚7      ╩╙╥ ─╒╨╙┼╘ [$├8╞┼] TO SET CONTROLS FOR READING THE DATA.
  53. $├8┼2           ╩╙╥ ─╒╨╚─╥ [$├977] TO READ THE HEADER AND WAIT FOR THE DATA BLOCK.
  54. $├8┼5           ╩╙╥ ╓╥╞┬╒╞ [$╞5╞5] TO VERIFY THE DATA.
  55. $├8┼8  ─╚8      ╔F THERE WAS AN ERROR THEN EXIT WITH A BRANCH TO ─╒╨┼╥╥ [$├95─].
  56. $├8┼┴           ╩╙╥ ─╒╨╬╪╘ [$├982] TO ADVANCE TO THE NEXT BLOCK.
  57. $├8┼─           ╔F THERE ARE MORE BLOCKS THEN LOOP BACK TO ─╚7.
  58. $├8┼╞           ┼XIT WITH A JUMP TO ╙╫╔─╥╓ [$├85┼] TO SWITCH BACK TO THE SOURCE DRIVE.
  59.  
  60.  
  61.  
  62.        ─╒╨╔╬╔   ╙ET UP CONTROLS FOR PROCESSING START BLOCK
  63.  
  64. $├8╞2           ├OPY ─╒╨╙╘ [$4├╞┴], THE STARTING SECTOR, TO      ─╒╨╙┼├ [$4├╞8], THE CURRENT SECTOR.
  65. $├8╞8           ╙ET ─╒╨┬╒╞ [$4├╞9], THE BUFFER NUMBER TO BE USED, TO ZERO.
  66. $├8╞─           ╥ETURN.
  67.  
  68.  
  69.  
  70.        ─╒╨╙┼╘   ╙ET UP CONTROLS FOR READ/WRITE OF CURRENT SECTOR
  71.  
  72. $├8╞┼           ├OPY THE CURRENT SECTOR ─╒╨╙┼├ [$4├╞8] TO       ╩╧┬╙┼├ [$4┼┴6].
  73. $├904           ├OPY CURRENT TRACK BEING DUPLICATED ├╒╥╘╥╦ [$4├╞7] TO ╩╧┬╘╥╦ [$4┼┴5].
  74.